#ifndef VERIFIERSYNCHRONIE_H
#define VERIFIERSYNCHRONIE_H

#endif // VERIFIERSYNCHRONIE_H
#include <cstdlib>
#include <stdio.h>
#include <cstring>
#include <cmath>
#include <stdlib.h>
#include <fstream>
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include<sys/stat.h>
#include<sys/types.h>
#include "batchVac.h"
#include "evolVac.h"
#include "options.h"
#include "index.h"
using namespace std;

//Verifier la Synchronie simulerSEIR_00, beta = constant, il n'y a pas de phase entre les populations
/******************************************************************************************************/
vector<string> faireSYNCH_identique(vector<double> valParSIM, char SAUVER[5]);
vector<string> faireSYNCH_synchronieI0(int nbVille,vector<double> valParSIM, char SAUVER[5]);
vector<string> faireSYNCH_quelconques(int nbVille,vector<double> valParSIM, char SAUVER[5]);

/******************************************************************************************************/
// Lire les valeurs SEIR a partir d'un fichier qui contient les lignes comme t  S  E  I  R  N  event
vector<nodeSEIR> readTable(string nomfichier);

/******************************************************************************************************/
// Extraire les series SEIR[x, x+T] dans la partie sationnaire de I
vector<nodeSEIR> extraireSEIR(double x, double T, vector<nodeSEIR> data);

/******************************************************************************************************/
// Extraire les valeurs initiales de SEIR pour les villes dans les series SEIR selon la valeur de synchronie ySYNCH
vector<nodeSEIR> extraireSEIR0(double ySYNCH,double tstartSYNCH,double T,
                               int nbVill, vector<nodeSEIR> dataExtrait);

/******************************************************************************************************/
// Verifier la synchronie avec :
// ySYNCH est dans l'interval[0,1], on va donner une valeur ySYNCHstep, ySYNCH = ySYNCH0 + ySYNCHstep
// Donner un chiffre qui est le nombre de fois le programme refait la synchronie
// Apres avoir fonctionne une simulation, la valeur d'extinction globale est 0 ou 1
// Resutat est un vecteur des valeurs moyennes de nombre d'extinctions globales de chaque ySYNCH
vector<double> verifierSYNCH(vector<double> valParSIM, int nbFoisRESYNCH0, double ySYNCHstep0);
vector<double> verifierSYNCH_ver02(vector<double> valParSIM, int nbFoisRESYNCH0, double ySYNCHstep0);
vector<double> verifierSYNCH_ver03(vector<double> valParSIM, int nbFoisRESYNCH0, double ySYNCHstep0);

/******************************************************************************************************/
//
//Verifier la Synchronie simulerSEIR_01, beta est une fonction cos et il y a des phases
vector<nodeSEIR> verifierSYNCH_01_00(vector<double> valParSIM, int nbFoisRESYNCH);

//Diviser le temps de simulation selon la chronologie
vector<double> diviserChronologie(double tstart, double tfinal, double unitTemps);

//Donner la figure de M en fonction de t, M egale le nombre de simulation
vector< vector<double > > voirPersiGlobale(vector<double> valParSIM, int nbFoisRESYNCH);
